package arithmetic;

import java.util.Scanner;

/**
 * HJ40 统计字符
 * 知识点：
 * 1.ASCII码：0~9/48~57 A-Z/65~90 a-z/97~122
 * 描述
 * 输入一行字符，分别统计出包含英文字母、空格、数字和其它字符的个数。
 *
 * 数据范围：输入的字符串长度满足 1≤n≤1000
 *
 * 输入描述：
 * 输入一行字符串，可以有空格
 *
 * 输出描述：
 * 统计其中英文字符，空格字符，数字字符，其他字符的个数
 *
 * 示例1
 * 输入：
 * 1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\/;p0-=\\][
 * 复制
 * 输出：
 * 26
 * 3
 * 10
 * 12
 */
public class TestHW40 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        // while (in.hasNextInt()) { // 注意 while 处理多个 case
        //     int a = in.nextInt();
        //     int b = in.nextInt();
        //     System.out.println(a + b);
        // }
        String str = in.nextLine();
        if(str.isEmpty()){
            System.out.println("0"+"\n"+"0"+"\n"+"0"+"\n"+"0");
            return;
        }
        String[] strs = str.split(" ");
        int num0=0,num1=0,num2=0,num3=0;
        num1 = strs.length-1;
        int[] nums = test1(strs);
        num0 = nums[0];
        num2 = nums[1];
        num3 = nums[2];
        System.out.println(num0+"\n"+num1+"\n"+num2+"\n"+num3);
    }

    public static int[] test1(String[] strs){
        int[] nums = new int[3];
        int index = 0;
        String str = "";
        while(index<strs.length){
            str+=strs[index];
            index++;
        }
        index = 0;
        while(index<str.length()){
            char ch = str.charAt(index);
            if(ch>=48 && ch<=57){
                nums[1]+=1;
            }else if((ch>=65&&ch<=90)||(ch>=97&&ch<=122)){
                nums[0]+=1;
            }else{
                nums[2]+=1;
            }
            index++;
        }
        return nums;
    }
}
